首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云云众生s

    流收集器:一种操作Java流的新方法

    Java 22 中 java.util.stream.Gatherers 接口中新的可定制流操作符的代码优先之旅。 译自 Stream gatherers: A new way to manipulate Java streams,作者 Matthew Tyson。 流收集器的内置方法 java.util.stream.Gatherers 接口带有一些内置函数,使你能够构建自定义中间操作。让我们看看每个函数的作用。 windowFixed 方法是一种更简单的方法,可以将你的树叶收集到桶中: Stream.iterate(0, i -> i + 1) .gather(Gatherers.windowFixed(2 Gatherers.fold 方法 Gatherers.fold 就像 Stream.reduce 方法的精炼版本。fold() 在哪里比 reduce() 更方便,这一点有点微妙。

    39210编辑于 2024-06-27
  • 来自专栏锤子代码

    JDK24:Stream流有个大变化,用起来更爽了

    Stream.of(1, 2, 3, 4, 5) .gather(Gatherers.fold(() -> 0, Integer::sum)) .forEach(System.out 每个元素乘以2: Stream.iterate(0, i -> i + 1) .limit(5) .gather(Gatherers.mapConcurrent(3, Stream.iterate(1, i -> i + 1) .limit(5) .gather(Gatherers.scan(() -> 1, (acc, i) -> acc Stream.iterate(0, i -> i + 1) .limit(8) .gather(Gatherers.windowFixed(3)) .forEach Stream.iterate(0, i -> i + 1) .limit(8) .gather(Gatherers.windowSliding(3)) .

    21500编辑于 2025-02-21
  • 来自专栏JavaEdge

    当Java 22遇到 SpringBoot 3.3.0(下)

    Gatherers 提供了一个稍微更底层的抽象层次,使你能在不需要将 Stream 具体化为 Collection 的情况下,在 Streams 上引入多种新操作。 ; import java.util.stream.Stream; @Component class Gatherers implements LanguageDemonstrationRunner  gather(scan(() -> "", (string, number) -> string + number)                         .andThen(java.util.stream.Gatherers.mapConcurrent Gatherers 方法的巧妙之处在于,它使社区能够根据自己的需求去设计解决方案。 它们是否会推出 Gatherers?还有其他什么项目会加入这一趋势?我期待看到很多实用的 gatherers 能够聚集到同一个地方。

    29300编辑于 2024-05-26
  • 来自专栏深度学习与python

    Java 近期资讯:Spring gRPC、Quarkus、Gatherers4j、Keycloak、Grails、Java Operator SDK

    Gatherers4j Gatherers4j 0.13.0 版本发布了新的中间方法 -uniquelyOccurringBy() ,旨在将流限制为由给定函数测量的唯一发生元素,以及添加到 Gatherers4j 抽象类中以计算 Java Stream<T> 接口的移动和运行中的中位数、最大值和最小值的 movingMedian() 和 movingMedianBy() , runningMedian() 和 Gatherers4j 由德意志银行的主管和首席工程师 Todd Ginsberg 于 2024 年 7 月推出,是一个基于 JEP 485,Stream Gatherers 的中间流库,在 JDK 24

    23810编辑于 2026-01-22
  • 来自专栏全栈程序员必看

    stream.map的用法_stream

    使用Stream流时发现其中的map方法使用不好容易理解,网上很多都说得很含糊不清,这里以一个小案例探讨一下Stream中map的使用。 , stream()优点 无存储。 对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。 惰式执行。 stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。 可消费性。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。 更多Stream方法点击1、Java8 Stream特性 2、stream.map重写Function函数示例 查看 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    2.3K10编辑于 2022-10-04
  • 来自专栏云时代Java开发:原理、实战与优化

    JDK 24 核心新特性:性能压轴,为下一代 LTS 铺平道路(Stream Gatherers、Scoped Values 、超高并发、量子计算和后量子密码)

    gather():Stream的新中间操作,接收一个Gatherer实例。 内置Gatherers示例1.1滑动窗口平均值计算展开代码语言:JavaAI代码解释importjava.util.List;importjava.util.stream.Gatherers;publicclassSlidingWindowExample ().gather(Gatherers.windowFixed(3)).map(window->window.stream().mapToInt(Integer::intValue).average() (Gatherers.groupingBy(String::charAt,0))//按首字母分组.toList();//结果:[(a,[apple,ant]),(b,[banana,bat]),(c,[ 关键价值总结对开发者:更简洁的语法(Gatherers,隐式类)、更强大的工具(ClassFileAPI)、更安全的保障(PQC)。

    9010编辑于 2026-04-23
  • 来自专栏大西瓜的Java专栏

    Stream

    Stream常用的一切操作一种类型转另一种List<HmsAdviceRecord> records = hmsAdviceRecordService.list(new LambdaQueryWrapper JSON.toJSONString(records), HmsAdviceRecordVo.class);根据对象泛型的某一个字段去重List<HmsPlanDetail> collect =list.stream ().collect(Collectors.groupingBy(HmsAdviceRecordVo::getBed));遍历替换操作取代传统的if比较hmsDrugProjects.stream(). Peek中间操作voList = voList.stream().peek(record -> {Optional<HmsInpatient> inpatient = list.stream().filter //首先,它使用了stream()方法将列表转换为一个流,//然后使用peek()方法对每个元素进行操作,而不改变流中的元素。

    81080编辑于 2023-07-18
  • 放弃 psvm 的 JDK 23 更有人情味...

    Markdown Documentation Comments Markdown 文档评论 469: Vector API (Eighth Incubator) Vector API(第八个培养箱) 473: Stream Gatherers (Second Preview) 流收集器(第二次预览) 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for ClassFile classFile = ClassFile.read(inputStream); Method method = classFile.methods().stream()     . 如果你想将 Gatherer 用于使用现有 Stream API 方法不容易实现的更复杂的操作,则可以创建自定义 Gatherer。 ()         .filter(n -> n %  == )         .map(n -> n * n)         .gather(Gatherers.windowFixed())         

    29210编辑于 2025-06-09
  • 来自专栏Sorrower的专栏

    redis stream(一):stream命令入门

    前言 stream是redis最复杂的一个数据结构, 也是redis5.0的一个重要更新. 有很多值得学习的点. 这里会做个小系列, 从基础使用到源码解析. 什么是stream stream实际上是一个消息发布订阅功能组件, 也就是消息队列. 这样的数据结构其实很常见, 比如腾讯云的cmq. 当然还有kafka等. ? 创建 xadd用来创建, 每个stream有一个唯一key, *意味着让系统给你返回id, id是由unix时间和从0开始下标组成, 也就是这一毫秒的第几个条目. xadd mystream * str1 hello str2 world 你可以用xlen查看信息数, 也可以用xinfo stream查看stream信息. ?

    1.8K10发布于 2020-07-27
  • 来自专栏Jaycekon

    Stream-快速入门Stream编程

    一、什么是流 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。 原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母 ”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。 Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。 流看作在时间中分布的一组值。 --性能更好 只能遍历一遍 二、使用流 简单说,对 Stream 的使用就是实现一个 filter-map-reduce 过程,产生一个最终结果,或者导致一个副作用(side effect)。

    1.6K70发布于 2018-03-09
  • 来自专栏咕咕星

    Stream API

    2、Stream流的特点 (1)Stream流不可变,每次改变就会创建一个新的流 (2)Stream流也不会改变数据源的数据 (3)Stream的中间操作是一个延迟操作,一直到终结操作时,一起完成。 3、Stream API的使用分为三个步骤 (1)创建Stream (2)0-n步中间操作 (3)终结操作 4、四种方式创建Stream (1)通过Arrays.stream(数组) ? (2)通过集合对象.stream() ? (3)Stream.of(…) ? (4)创建无限流 Stream.generate(Supplier) Stream.iterate(T seed,UnaryOperator) ? 6、终结操作:这些方法的返回值类型不是Stream,所以不能继续再操作,所以对Stream的操作就结束 一个流一旦终结就结束了,就不能用了,要再使用,需要重写创建新的Stream (1)forEach(

    98430发布于 2020-08-19
  • 来自专栏明丰随笔

    Stream实战

    Stream概述 在夜晚,仰望星空的时候,你只能看到星星和月亮。在Stream的世界里,你只能看到无数的0和1组成的二进制数据(byte)。 由于Stream是抽象类,它不可以被直接初始化,但是可以从它的子类来初始化一个Stream对象。.net framework中已经默认实现了很多种不同类型的XXXStream都扩展自StreamStream中的属性: CanRead: 表明当前stream是否可以Read操作。 CanSeek: 表明当前stream是否可以Seek操作。 CanWrite: 表明当前stream是否可以Write操作。 Length: 返回封装在里面的byte[]的长度。 Position: 表明当前stream中Position指针位置。 Stream中的方法: //把保存在缓冲区里面的数据写入硬盘上,并清空缓冲区的数据。 void Flush(); //buffer: 读取Stream的数据,保存到buffer中。

    1.4K10发布于 2019-07-15
  • 来自专栏快乐阿超

    stream拓展

    源码地址:https://gitee.com/VampireAchao/stream-query/blob/master/stream-core/src/main/java/io/github/vampireachao /stream/core/stream/Steam.java 测试用例: https://gitee.com/VampireAchao/stream-query/blob/master/stream-core /src/test/java/io/github/vampireachao/stream/core/stream/SteamTest.java package io.github.vampireachao.stream.core.stream org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.*; import java.util.stream.Stream Assertions.assertEquals(3, Steam.of(1, 2, 3).count()); Assertions.assertEquals(3, Steam.of(Stream.builder

    1.4K20编辑于 2022-08-21
  • 来自专栏成长之路

    stream

    userList.add(user2); userList.add(user3); List<User> userSortedList = userList.stream

    78200发布于 2019-12-15
  • 来自专栏全栈程序员必看

    jdk 8 stream_stream流是什么

    我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator; 可以支持顺序和并行的对原Stream进行汇聚的操作; 大家可以把Stream当成一个高级版本的 红色框中的语句是一个Stream的生命开始的地方,负责创建一个Stream实例;绿色框中的语句是赋予Stream灵魂的地方,把一个Stream转换成另外一个Stream,红框的语句生成的是一个包含所有nums 在此我们总结一下使用Stream的基本步骤: 创建Stream; 转换Stream,每次转换原有Stream对象不改变,返回一个新的Stream对象(**可以有多次转换**); 对Stream 每条语句其实都是生成一个无限长度的Stream,其中值是随机的。这个无限长度Stream是懒加载,一般这种无限长度的Stream都会配合Stream的limit()方法来用。 转换Stream 转换Stream其实就是把一个Stream通过某些行为转换成一个新的StreamStream接口中定义了几个常用的转换方法,下面我们挑选几个常用的转换方法来解释。

    56820编辑于 2022-11-08
  • 来自专栏JavaEdge

    当Java 22遇到 SpringBoot 3.3.0!

    Gatherers 提供了一个稍微更底层的抽象层次,使你能够在不需要将 Stream 具体化为 Collection 的情况下,在 Streams 上引入多种新操作。 ; import java.util.stream.Stream; @Component class Gatherers implements LanguageDemonstrationRunner gather(scan(() -> "", (string, number) -> string + number) .andThen(java.util.stream.Gatherers.mapConcurrent Gatherers 方法的巧妙之处在于,它使社区能够根据自己的需求去设计解决方案。 它们是否会推出 Gatherers?还有其他什么项目会加入这一趋势?我期待看到很多实用的 gatherers 能够聚集到同一个地方。

    57700编辑于 2024-05-26
  • 来自专栏快乐阿超

    新版Stream

    ——迈克尔·F·斯特利 Java9和Java16中更新了Stream中的函数 // @since 9:无限流现在可以给终止条件啦! 注意第二个参数 // @since 16:toList简化了.collect(Collectors.toList()) // 这里是从0获取到99的元素 List<Integer> collect = Stream.iterate dropWhile(i -> i < 66).toList(); System.out.println("dropWhile" + drop); // @since 9:ofNullable,之前只有Stream.of ,而Stream.of(null)会抛出NPE // ofNullable如果为空,则得到一个Stream.empty() Stream.ofNullable(null); Stream.of(""); ... // BiConsumer中第一个参数是当前元素,第二个参数为Consumer,调用accept,传入要替换的值即可,这里b为一个Consumer,调用多次即可实现一变多,类似flatMap Stream.of

    80010编辑于 2022-08-16
  • 来自专栏码上遇见你

    JDK 22 发布了

    Source-Code Programs 459: String Templates (Second Preview) 460: Vector API (Seventh Incubator) 461: Stream Gatherers (Preview) 462: Structured Concurrency (Second Preview) 463: Implicitly Declared Classes and

    35610编辑于 2024-03-21
  • 来自专栏Howl同学的学习笔记

    Stream补充

    实习的公司使用Stream来操作集合,熟悉代码阶段就令人头大,来补课了 1. 常见的接口 我们常用Lambda来表达这些函数式接口,所以看着比较陌生,其实日常都有使用到。 * * @param t the input argument */ void accept(T t); } list.stream().forEach(s -> ().map(s -> s + "-"); // Stream<R> map(Function<? map = Arrays.stream(array).collect(Collectors.toMap()); 2.2.1 toMap()规约 阿里巴巴Java开发手册规约提到: 【强制】在使用 java.util.stream.Collectors 类的 toMap() 方法转为 Map 集合时,一定要使用含有参数类型为BinaryOperator,参数名为 mergeFunction 的方法

    67220发布于 2020-12-01
  • 来自专栏网络收集

    Stream

    Java Stream 类JDK 1.8 新增。将要处理的元素集合看作一种流,在管道的节点上进行处理。使代码更简洁易读。 集合接口有两个方法来生成流,数据类型将由 Collection 转化为 Streamstream 方法:为集合创建串行流。parallelStream 方法:为集合创建并行流。 Stream 的遍历方式和结果与 Iterator 无差别(便于转化),其优势在于其原型链的设计使得它可以对遍历处理后的数据进行再处理。 Stream<Integer> stream = list.stream(); // 声明作为流处理ParellerStream<Integer> pStream Stream 上的所有操作分为两类:中间操作和结束操作。Stream 是延迟执行的,只有调用到结束操作,才触发整个流水线的执行。如果未定义结束操作,那么流处理什么也不会做。

    71920编辑于 2022-08-06
领券